#include <iostream>
#include <queue>
#include <cstdio>
using namespace std;
struct node {
    int x,y;
    int dir;
    int cnt;
};
char a[110][110];
int k,n,m;
bool visited[110][110];
int dirc[4][2] ={ {-1,0},{1,0},{0,-1},{0,1} };
node st,en;
bool BFS() {
    queue<node> q;
    st.cnt=-1;
    st.dir=-1;
    q.push(st);
    visited[st.x][st.y]=true;
    node pre,tmp;
    while ( !q.empty() ) {
        pre=q.front();
        q.pop();
        if (pre.x == en.x && pre.y == en.y ) return true;
        for (int i=0; i<4; i++) {
            tmp.x=pre.x+dirc[i][0];
            tmp.y=pre.y+dirc[i][1];
            tmp.dir=i;
            tmp.cnt=pre.cnt;
            if (i!=pre.dir) tmp.cnt++;
            if (tmp.cnt>k) continue;
            if (tmp.x<1 || tmp.x>n || tmp.y<1 || tmp.y>m) continue;
            if (visited[tmp.x][tmp.y]) continue;
            if (a[tmp.x][tmp.y]=='*') continue;
            q.push(tmp);
            visited[tmp.x][tmp.y]=true;
        }
    }
    return false;
}
int main() {
    int z;
    cin>>z;
    char ch;
    while (z--) {
        cin>>n>>m;
        for (int i=1; i<=n; i++) {
            for (int j=1; j<=m; j++) {
                cin>>a[i][j];
            //    scanf ("%c", &ch);
            //    a[i][j]=ch;
                visited[i][j]=false;
            }
        }
        cin>>k>>st.y>>st.x>>en.y>>en.x;
        if (BFS()) cout<<"yes"<<endl;
        else cout<<"no"<<endl;
    }
    return 0;
}
